home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-13 / thesrc10.zip / COMMAND.H < prev    next >
C/C++ Source or Header  |  1992-08-11  |  22KB  |  414 lines

  1. /*
  2.  * THE - The Hessling Editor. A text editor similar to VM/CMS xedit.
  3.  * Copyright (C) 1991,1992 Mark Hessling
  4.  *
  5.  * This program is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU General Public License as
  7.  * published by the Free Software Foundation; either version 2 of
  8.  * the License, or any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13.  * General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to:
  17.  *
  18.  *    The Free Software Foundation, Inc.
  19.  *    675 Mass Ave,
  20.  *    Cambridge, MA 02139 USA.
  21.  *
  22.  *
  23.  * If you make modifications to this software that you feel increases
  24.  * it usefulness for the rest of the community, please email the
  25.  * changes, enhancements, bug fixes as well as any and all ideas to me.
  26.  * This software is going to be maintained and enhanced as deemed
  27.  * necessary by the community.
  28.  *
  29.  * Mark Hessling                     email: M.Hessling@itc.gu.edu.au
  30.  * 36 David Road                     Phone: +61 7 849 7731
  31.  * Holland Park                      Fax:   +61 7 875 7877
  32.  * QLD 4121
  33.  * Australia
  34.  */
  35. struct commands
  36. {
  37.  unsigned char *text;
  38.  unsigned short min_len;
  39.  unsigned int funkey;
  40. #ifdef PROTO
  41.  int (*function)(unsigned char *);
  42. #else
  43.  int (*function)();
  44. #endif
  45.  bool valid_profile_command;
  46.  bool set_command;
  47.  unsigned char *params;
  48. };
  49. typedef struct commands COMMAND;
  50.  
  51. struct defines
  52. {
  53.  unsigned int def_funkey;
  54.  unsigned char *def_params;
  55.  short def_command;
  56.  struct defines *def_next;
  57. };
  58. typedef struct defines DEFINE;
  59.  
  60. DEFINE *first_define=NULL;
  61.  
  62. #ifdef PROTO
  63. int Add(unsigned char *);
  64. int All(unsigned char *);
  65. int Autosave(unsigned char *);
  66. int Backward(unsigned char *);
  67. int Bottom(unsigned char *);
  68. int Cancel(unsigned char *);
  69. int Case(unsigned char *);
  70. int Ccancel(unsigned char *);
  71. int Change(unsigned char *);
  72. int Cmatch(unsigned char *);
  73. int Cmdarrows(unsigned char *);
  74. int Colour(unsigned char *);
  75. int Control_char(unsigned char *);
  76. int Copy(unsigned char *);
  77. int Define(unsigned char *);
  78. int Delete_line(unsigned char *);
  79. int Directory(unsigned char *);
  80. int Down_arrow(unsigned char *);
  81. int Edit(unsigned char *);
  82. int Enter(unsigned char *);
  83. int Eolout(unsigned char *);
  84. int Ffile(unsigned char *);
  85. int File(unsigned char *);
  86. int Forward(unsigned char *);
  87. int Get(unsigned char *);
  88. int Help(unsigned char *);
  89. int Input(unsigned char *);
  90. int Insertmode(unsigned char *);
  91. int Left_arrow(unsigned char *);
  92. int Locate(unsigned char *);
  93. int Mark(unsigned char *);
  94. int Move(unsigned char *);
  95. int Next(unsigned char *);
  96. int Nextwindow(unsigned char *);
  97. int Os_cmd(unsigned char *);
  98. int Prefix(unsigned char *);
  99. int Print(unsigned char *);
  100. int Printer(unsigned char *);
  101. int Put(unsigned char *);
  102. int Putd(unsigned char *);
  103. int Qquit(unsigned char *);
  104. int Quit(unsigned char *);
  105. int Recover(unsigned char *);
  106. int Refresh(unsigned char *);
  107. int Reset(unsigned char *);
  108. int Retrieve(unsigned char *);
  109. int Right_arrow(unsigned char *);
  110. int Save(unsigned char *);
  111. int Set(unsigned char *);
  112. int Schange(unsigned char *);
  113. int Screen(unsigned char *);
  114. int ShowKey(unsigned char *);
  115. int Sos_addline(unsigned char *);
  116. int Sos_delback(unsigned char *);
  117. int Sos_delchar(unsigned char *);
  118. int Sos_delend(unsigned char *);
  119. int Sos_delline(unsigned char *);
  120. int Sos_edit(unsigned char *);
  121. int Sos_endchar(unsigned char *);
  122. int Sos_tabf(unsigned char *);
  123. int Sos_tabwordb(unsigned char *);
  124. int Sos_tabwordf(unsigned char *);
  125. int Sos_undo(unsigned char *);
  126. int Spltjoin(unsigned char *);
  127. int Ssave(unsigned char *);
  128. int Stay(unsigned char *);
  129. int Tabcmd(unsigned char *);
  130. int Tabkey(unsigned char *);
  131. int Tabpre(unsigned char *);
  132. int Tabs(unsigned char *);
  133. int Tabsin(unsigned char *);
  134. int Tabsout(unsigned char *);
  135. int Top(unsigned char *);
  136. int Up(unsigned char *);
  137. int Up_arrow(unsigned char *);
  138. int Verify(unsigned char *);
  139. int Zone(unsigned char *);
  140. #else
  141. int Add();
  142. int All();
  143. int Autosave();
  144. int Backward();
  145. int Bottom();
  146. int Cancel();
  147. int Case();
  148. int Ccancel();
  149. int Change();
  150. int Cmatch();
  151. int Cmdarrows();
  152. int Colour();
  153. int Control_char();
  154. int Copy();
  155. int Define();
  156. int Delete_line();
  157. int Directory();
  158. int Down_arrow();
  159. int Edit();
  160. int Enter();
  161. int Eolout();
  162. int Ffile();
  163. int File();
  164. int Forward();
  165. int Get();
  166. int Help();
  167. int Input();
  168. int Insertmode();
  169. int Locate();
  170. int Left_arrow();
  171. int Mark();
  172. int Move();
  173. int Next();
  174. int Nextwindow();
  175. int Os_cmd();
  176. int Prefix();
  177. int Print();
  178. int Printer();
  179. int Put();
  180. int Putd();
  181. int Qquit();
  182. int Quit();
  183. int Recover();
  184. int Refresh();
  185. int Reset();
  186. int Retrieve();
  187. int Right_arrow();
  188. int Save();
  189. int Schange();
  190. int Screen();
  191. int Set();
  192. int ShowKey();
  193. int Sos_addline();
  194. int Sos_delback();
  195. int Sos_delchar();
  196. int Sos_delend();
  197. int Sos_delline();
  198. int Sos_edit();
  199. int Sos_endchar();
  200. int Sos_tabf();
  201. int Sos_tabwordb();
  202. int Sos_tabwordf();
  203. int Sos_undo();
  204. int Spltjoin();
  205. int Ssave();
  206. int Stay();
  207. int Tabcmd();
  208. int Tabkey();
  209. int Tabpre();
  210. int Tabs();
  211. int Tabsin();
  212. int Tabsout();
  213. int Top();
  214. int Up();
  215. int Up_arrow();
  216. int Verify();
  217. int Zone();
  218. #endif
  219.  
  220. /*---------------------- *** IMPORTANT *** ----------------------------*/
  221. /* Make sure that there is no chance two or more commands can be       */
  222. /* matched based on number of significant charcters.                   */
  223. /*---------------------- *** IMPORTANT *** ----------------------------*/
  224. #if defined(DOS) || defined(OS2)
  225. #define MAX_COMMANDS 86
  226. #else
  227. #define MAX_COMMANDS 95
  228. #endif
  229. COMMAND command[MAX_COMMANDS] =
  230. {
  231.  {(unsigned char *)"add",         3,  0,               Add,         TRUE, FALSE, (unsigned char *)"1"}, /* comm1.c */
  232.  {(unsigned char *)"all",         3,  0,               All,         TRUE, FALSE, (unsigned char *)""}, /* comm1.c */
  233.  {(unsigned char *)"autosave",    2,  0,               Autosave,    TRUE, TRUE,  (unsigned char *)"1"}, /* comm1.c */
  234. #if defined(DOS) || defined(OS2)
  235.  {(unsigned char *)"backward",    2,  KEY_PGUP,        Backward,    FALSE,FALSE, (unsigned char *)"1"}, /* comm1.c */
  236.  {(unsigned char *)"bottom",      3,  KEY_C_PGDN,      Bottom,      TRUE, FALSE, (unsigned char *)""},  /* comm1.c */
  237. #else
  238.  {(unsigned char *)"backward",    2,  KEY_PPAGE,       Backward,    FALSE,FALSE, (unsigned char *)"1"}, /* comm1.c */
  239.  {(unsigned char *)"backward",    2,  KEY_PrevScrn,    Backward,    FALSE,FALSE, (unsigned char *)"1"}, /* comm1.c */
  240.  {(unsigned char *)"bottom",      3,  0,               Bottom,      TRUE, FALSE, (unsigned char *)""},  /* comm1.c */
  241. #endif
  242.  {(unsigned char *)"cancel",      3,  0,               Cancel,      TRUE, FALSE, (unsigned char *)""},  /* comm1.c */
  243.  {(unsigned char *)"case",        4,  0,               Case,        TRUE, TRUE,  (unsigned char *)""},  /* comm1.c */
  244.  {(unsigned char *)"ccancel",     2,  0,               Ccancel,     TRUE, FALSE, (unsigned char *)""},  /* comm1.c */
  245.  {(unsigned char *)"change",      1,  0,               Change,      TRUE, FALSE, (unsigned char *)""},  /* comm1.c */
  246. #if defined(DOS) || defined(OS2)
  247.  {(unsigned char *)"cmatch",      0,  KEY_F7,          Cmatch,      FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  248. #else
  249.  {(unsigned char *)"cmatch",      0,  KEY_F(7),        Cmatch,      FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  250. #endif
  251.  {(unsigned char *)"cmdarrows",   4,  0,               Cmdarrows,   TRUE, TRUE,  (unsigned char *)""},  /* comm1.c */
  252.  {(unsigned char *)"colour",      6,  0,               Colour,      TRUE, TRUE,  (unsigned char *)""},  /* comm1.c */
  253.  {(unsigned char *)"color",       5,  0,               Colour,      TRUE, TRUE,  (unsigned char *)""},  /* comm1.c */
  254.  {(unsigned char *)"copy",        4,  0,               Copy,        FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  255. #if defined(DOS) || defined(OS2)
  256.  {(unsigned char *)"control_char",0,  KEY_F12,         Control_char,FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  257.  {(unsigned char *)"copy",        0,  KEY_A_c,         Copy,        FALSE,FALSE, (unsigned char *)"block"},  /* comm1.c */
  258. #else
  259.  {(unsigned char *)"control_char",0,  KEY_F(6),        Control_char,FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  260.  {(unsigned char *)"copy",        0,  ControlC,        Copy,        FALSE,FALSE, (unsigned char *)"block"},  /* comm1.c */
  261. #endif
  262.  {(unsigned char *)"define",      3,  0,               Define,      TRUE, TRUE,  (unsigned char *)"1"}, /* comm1.c */
  263.  {(unsigned char *)"delete",      3,  0,               Delete_line, TRUE, FALSE, (unsigned char *)"1"}, /* comm1.c */
  264. #if defined(DOS) || defined(OS2)
  265.  {(unsigned char *)"delete",      0,  KEY_A_g,         Delete_line, FALSE,FALSE, (unsigned char *)"block"}, /* comm1.c */
  266. #else
  267.  {(unsigned char *)"delete",      0,  ControlG,        Delete_line, FALSE,FALSE, (unsigned char *)"block"}, /* comm1.c */
  268. #endif
  269.  {(unsigned char *)"directory",   3,  0,               Directory,   FALSE,FALSE, (unsigned char *)"1"}, /* comm1.c */
  270.  {(unsigned char *)"ls",          2,  0,               Directory,   FALSE,FALSE, (unsigned char *)"1"}, /* comm1.c */
  271. #if defined(DOS) || defined(OS2)
  272.  {(unsigned char *)"down_arrow",  0,  KEY_CURD,        Down_arrow,  FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  273. #else
  274.  {(unsigned char *)"down_arrow",  0,  KEY_DOWN,        Down_arrow,  FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  275.  {(unsigned char *)"enter",       0,  ControlM,        Enter,       FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  276. #endif
  277.  {(unsigned char *)"edit",        1,  0,               Edit,        FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  278.  {(unsigned char *)"xedit",       1,  0,               Edit,        FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  279.  {(unsigned char *)"the",         3,  0,               Edit,        FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  280.  {(unsigned char *)"enter",       0,  KEY_ENTER,       Enter,       FALSE,FALSE, (unsigned char *)""},  /* comm1.c */
  281.  {(unsigned char *)"eolout",      4,  0,               Eolout,      TRUE, TRUE,  (unsigned char *)""},  /* comm1.c */
  282.  {(unsigned char *)"ffile",       2,  0,               Ffile,       TRUE, FALSE, (unsigned char *)""},  /* comm2.c */
  283. #if defined(DOS) || defined(OS2)
  284.  {(unsigned char *)"file",        4,  KEY_F3,          File,        TRUE, FALSE, (unsigned char *)""},  /* comm2.c */
  285. #else
  286.  {(unsigned char *)"file",        4,  KEY_F(3),        File,        TRUE, FALSE, (unsigned char *)""},  /* comm2.c */
  287.  {(unsigned char *)"file",        0,  KEY_PF3,         File,        TRUE, FALSE, (unsigned char *)""},  /* comm2.c */
  288. #endif
  289. #if defined(DOS) || defined(OS2)
  290.  {(unsigned char *)"forward",     2,  KEY_PGDN,        Forward,     FALSE,FALSE, (unsigned char *)"1"}, /* comm2.c */
  291. #else
  292.  {(unsigned char *)"forward",     2,  KEY_NPAGE,       Forward,     FALSE,FALSE, (unsigned char *)"1"}, /* comm2.c */
  293.  {(unsigned char *)"forward",     2,  KEY_NextScrn,    Forward,     FALSE,FALSE, (unsigned char *)"1"}, /* comm2.c */
  294. #endif
  295.  {(unsigned char *)"get",         3,  0,               Get,         TRUE, FALSE, (unsigned char *)""},  /* comm2.c */
  296. #if defined(DOS) || defined(OS2)
  297.  {(unsigned char *)"help",        4,  KEY_F1,          Help,        FALSE,FALSE, (unsigned char *)""},  /* comm2.c */
  298. #else
  299.  {(unsigned char *)"help",        4,  KEY_F(1),        Help,        FALSE,FALSE, (unsigned char *)""},  /* comm2.c */
  300.  {(unsigned char *)"help",        0,  KEY_PF1,         Help,        FALSE,FALSE, (unsigned char *)""},  /* comm2.c */
  301. #endif
  302.  {(unsigned char *)"input",       1,  0,               Input,       TRUE, FALSE, (unsigned char *)""},  /* comm2.c */
  303. #if defined(DOS) || defined(OS2)
  304.  {(unsigned char *)"insertmode",  7,  KEY_INS,         Insertmode,  TRUE, TRUE,  (unsigned char *)""},  /* comm2.c */
  305.  {(unsigned char *)"left_arrow",  0,  KEY_CURL,        Left_arrow,  FALSE,FALSE, (unsigned char *)""},  /* comm3.c */
  306.  {(unsigned char *)"locate",      1,  KEY_S_F1,        Locate,      TRUE, FALSE, (unsigned char *)""},  /* comm3.c */
  307. #else
  308.  {(unsigned char *)"insertmode",  7,  KEY_IC,          Insertmode,  TRUE, TRUE,  (unsigned char *)""},  /* comm2.c */
  309.  {(unsigned char *)"left_arrow",  0,  KEY_LEFT,        Left_arrow,  FALSE,FALSE, (unsigned char *)""},  /* comm3.c */
  310.  {(unsigned char *)"locate",      1,  KEY_F(11),       Locate,      TRUE, FALSE, (unsigned char *)""},  /* comm3.c */
  311. #endif
  312.  {(unsigned char *)"mark",        4,  0,               Mark,        FALSE,FALSE, (unsigned char *)""},  /* comm3.c */
  313. #if defined(DOS) || defined(OS2)
  314.  {(unsigned char *)"mark",        0,  KEY_A_l,         Mark,        FALSE,FALSE, (unsigned char *)"line"},  /* comm3.c */
  315.  {(unsigned char *)"move",        4,  KEY_A_m,         Move,        FALSE,FALSE, (unsigned char *)"block"},  /* comm3.c */
  316.  {(unsigned char *)"nextwindow",  5,  KEY_F2,          Nextwindow,  FALSE,FALSE, (unsigned char *)""}, /* comm3.c */
  317. #else
  318.  {(unsigned char *)"mark",        0,  ControlL,        Mark,        FALSE,FALSE, (unsigned char *)"line"},  /* comm3.c */
  319.  {(unsigned char *)"move",        4,  ControlV,        Move,        FALSE,FALSE, (unsigned char *)"block"},  /* comm3.c */
  320.  {(unsigned char *)"nextwindow",  5,  KEY_F(2),        Nextwindow,  FALSE,FALSE, (unsigned char *)""}, /* comm3.c */
  321.  {(unsigned char *)"nextwindow",  5,  KEY_PF2,         Nextwindow,  FALSE,FALSE, (unsigned char *)""}, /* comm3.c */
  322. #endif
  323.  {(unsigned char *)"next",        1,  0,               Next,        TRUE, FALSE, (unsigned char *)"1"}, /* comm3.c */
  324.  {(unsigned char *)"dos",         3,  0,               Os_cmd,      FALSE,FALSE, (unsigned char *)""},  /* comm3.c */
  325.  {(unsigned char *)"!",           1,  0,               Os_cmd,      FALSE,FALSE, (unsigned char *)""},  /* comm3.c */
  326.  {(unsigned char *)"prefix",      3,  0,               Prefix,      TRUE, TRUE,  (unsigned char *)""},  /* comm4.c */
  327.  {(unsigned char *)"printer",     7,  0,               Printer,     TRUE, TRUE,  (unsigned char *)""},  /* comm4.c */
  328.  {(unsigned char *)"print",       2,  0,               Print,       TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  329.  {(unsigned char *)"put",         3,  0,               Put,         TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  330.  {(unsigned char *)"putd",        4,  0,               Putd,        TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  331. #if defined(DOS) || defined(OS2)
  332.  {(unsigned char *)"qquit",       2,  KEY_S_F3,        Qquit,       TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  333. #else
  334.  {(unsigned char *)"qquit",       2,  KEY_F(13),       Qquit,       TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  335. #endif
  336.  {(unsigned char *)"quit",        4,  0,               Quit,        TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  337. #if defined(DOS) || defined(OS2)
  338.  {(unsigned char *)"right_arrow", 0,  KEY_CURR,        Right_arrow, FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  339.  {(unsigned char *)"recover",     3,  KEY_F8,          Recover,     FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  340.  {(unsigned char *)"refresh",     3,  KEY_C_r,         Refresh,     FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  341. #else
  342.  {(unsigned char *)"right_arrow", 0,  KEY_RIGHT,       Right_arrow, FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  343.  {(unsigned char *)"recover",     3,  KEY_F(8),        Recover,     FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  344.  {(unsigned char *)"refresh",     3,  ControlR,        Refresh,     FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  345. #endif
  346.  {(unsigned char *)"reset",       3,  0,               Reset,       FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  347. #if defined(DOS) || defined(OS2)
  348.  {(unsigned char *)"reset",       0,  KEY_A_u,         Reset,       FALSE,FALSE, (unsigned char *)"block"},  /* comm4.c */
  349. #else
  350.  {(unsigned char *)"reset",       0,  ControlU,        Reset,       FALSE,FALSE, (unsigned char *)"block"},  /* comm4.c */
  351. #endif
  352.  {(unsigned char *)"?",           1,  0,               Retrieve,    FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  353.  {(unsigned char *)"save",        4,  0,               Save,        TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  354.  {(unsigned char *)"schange",     3,  0,               Schange,     FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  355.  {(unsigned char *)"screen",      3,  0,               Screen,      FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  356.  {(unsigned char *)"set",         3,  0,               Set,         TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  357.  {(unsigned char *)"showkey",     4,  0,               ShowKey,     FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  358. #if defined(DOS) || defined(OS2)
  359.  {(unsigned char *)"sos_addline", 0,  KEY_F4,          Sos_addline, FALSE,FALSE, (unsigned char *)"1"}, /* commsos.c */
  360.  {(unsigned char *)"sos_delback", 0,  KEY_BKSP,        Sos_delback, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  361.  {(unsigned char *)"sos_delchar", 0,  KEY_DEL,         Sos_delchar, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  362.  {(unsigned char *)"sos_delend",  0,  KEY_C_END,       Sos_delend,  FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  363.  {(unsigned char *)"sos_delline", 0,  KEY_F9,          Sos_delline, FALSE,FALSE, (unsigned char *)"1"}, /* commsos.c */
  364.  {(unsigned char *)"sos_edit",    0,  KEY_A_x,         Sos_edit,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  365.  {(unsigned char *)"sos_endchar", 0,  KEY_END,         Sos_endchar, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  366.  {(unsigned char *)"sos_tabf",    0,  KEY_TAB,         Sos_tabf,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  367.  {(unsigned char *)"sos_tabwordb",0,  KEY_C_CURL,      Sos_tabwordb,FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  368.  {(unsigned char *)"sos_tabwordf",0,  KEY_C_CURR,      Sos_tabwordf,FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  369.  {(unsigned char *)"sos_undo",    0,  KEY_ESC,         Sos_undo,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  370.  {(unsigned char *)"spltjoin",    8,  KEY_F10,         Spltjoin,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  371. #else
  372.  {(unsigned char *)"sos_addline", 0,  KEY_F(4),        Sos_addline, FALSE,FALSE, (unsigned char *)"1"}, /* commsos.c */
  373.  {(unsigned char *)"sos_addline", 0,  KEY_PF4,         Sos_addline, FALSE,FALSE, (unsigned char *)"1"}, /* commsos.c */
  374.  {(unsigned char *)"sos_delback", 0,  127,             Sos_delback, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  375.  {(unsigned char *)"sos_delchar", 0,  8,               Sos_delchar, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  376.  {(unsigned char *)"sos_delchar", 0,  KEY_DC,          Sos_delchar, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  377.  {(unsigned char *)"sos_delend",  0,  ControlE,        Sos_delend,  FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  378.  {(unsigned char *)"sos_delline", 0,  KEY_F(9),        Sos_delline, FALSE,FALSE, (unsigned char *)"1"}, /* commsos.c */
  379.  {(unsigned char *)"sos_edit",    0,  ControlX,        Sos_edit,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  380.  {(unsigned char *)"sos_endchar", 0,  KEY_F(20),       Sos_endchar, FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  381.  {(unsigned char *)"sos_tabf",    0,  Tab,             Sos_tabf,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  382.  {(unsigned char *)"sos_tabwordb",0,  ControlJ,        Sos_tabwordb,FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  383.  {(unsigned char *)"sos_tabwordf",0,  ControlK,        Sos_tabwordf,FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  384.  {(unsigned char *)"sos_undo",    0,  ControlZ,        Sos_undo,    FALSE,FALSE, (unsigned char *)""},  /* commsos.c */
  385.  {(unsigned char *)"spltjoin",    8,  KEY_F(10),       Spltjoin,    FALSE,FALSE, (unsigned char *)""},  /* comm4.c */
  386. #endif
  387.  {(unsigned char *)"ssave",       2,  0,               Ssave,       TRUE, FALSE, (unsigned char *)""},  /* comm4.c */
  388.  {(unsigned char *)"stay",        4,  0,               Stay,        TRUE, TRUE,  (unsigned char *)""},  /* comm4.c */
  389. #if defined(DOS) || defined(OS2)
  390.  {(unsigned char *)"tabcmd",      4,  KEY_HOME,        Tabcmd,      FALSE,FALSE, (unsigned char *)""},  /* comm5.c */
  391. #else
  392.  {(unsigned char *)"tabcmd",      4,  KEY_HOME,        Tabcmd,      FALSE,FALSE, (unsigned char *)""},  /* comm5.c */
  393.  {(unsigned char *)"tabcmd",      4,  KEY_Do,          Tabcmd,      FALSE,FALSE, (unsigned char *)""},  /* comm5.c */
  394. #endif
  395.  {(unsigned char *)"tabkey",      4,  0,               Tabkey,      TRUE, TRUE,  (unsigned char *)""},  /* comm5.c */
  396.  {(unsigned char *)"tabpre",      4,  0,               Tabpre,      FALSE,FALSE, (unsigned char *)""},  /* comm5.c */
  397.  {(unsigned char *)"tabs",        4,  0,               Tabs,        TRUE, TRUE,  (unsigned char *)""},  /* comm5.c */
  398.  {(unsigned char *)"tabsin",      5,  0,               Tabsin,      TRUE, TRUE,  (unsigned char *)""},  /* comm5.c */
  399.  {(unsigned char *)"tabsout",     5,  0,               Tabsout,     TRUE, TRUE,  (unsigned char *)""},  /* comm5.c */
  400. #if defined(DOS) || defined(OS2)
  401.  {(unsigned char *)"top",         3,  KEY_C_PGUP,      Top,         TRUE, FALSE, (unsigned char *)""},  /* comm5.c */
  402. #else
  403.  {(unsigned char *)"top",         3,  0,               Top,         TRUE, FALSE, (unsigned char *)""},  /* comm5.c */
  404. #endif
  405.  {(unsigned char *)"up",          2,  0,               Up,          TRUE, FALSE, (unsigned char *)"1"}, /* comm5.c */
  406. #if defined(DOS) || defined(OS2)
  407.  {(unsigned char *)"up_arrow",    0,  KEY_CURU,        Up_arrow,    FALSE,FALSE, (unsigned char *)""},  /* comm5.c */
  408. #else
  409.  {(unsigned char *)"up_arrow",    0,  KEY_UP,          Up_arrow,    FALSE,FALSE, (unsigned char *)""},  /* comm5.c */
  410. #endif
  411.  {(unsigned char *)"verify",      1,  0,               Verify,      FALSE,TRUE,  (unsigned char *)""},  /* comm5.c */
  412.  {(unsigned char *)"zone",        1,  0,               Zone,        TRUE, TRUE,  (unsigned char *)""}   /* comm5.c */
  413. };
  414.